package repo

import (
	"context"
	"github.com/star-find-cloud/star-chat/image/domain"
)

type ImageRepo interface {
	// Create 创建图片元数据
	Create(ctx context.Context, image *domain.Image) (int64, error)
	// CreateMany 创建多个图片元数据
	CreateMany(ctx context.Context, images []*domain.Image) (int64, error)

	// Get 获取图片元数据
	Get(ctx context.Context, id int64) (*domain.Image, error)
	// GetMany 获取多个图片元数据
	GetMany(ctx context.Context, ids []int64) ([]*domain.Image, error)
	// GetByOwner 获取指定对象的图片元数据
	GetByOwner(ctx context.Context, ownerType, ownerID int64) ([]*domain.Image, error)
	// GetManyByOwner 获取指定对象的多个图片元数据
	GetManyByOwner(ctx context.Context, ownerType, ownerID int64, limit, offset int64) ([]*domain.Image, error)
	// GetUrl 获取图片元数据的URL
	GetUrl(ctx context.Context, id int64) (string, error)
	// GetUrlMany 获取多个图片元数据的URL
	GetUrlMany(ctx context.Context, ids []int64) ([]string, error)

	// Update 更新图片元数据
	Update(ctx context.Context, image *domain.Image) error
	// UpdateMany 更新多个图片元数据
	UpdateMany(ctx context.Context, images []*domain.Image) error

	// Delete 删除图片元数据
	Delete(ctx context.Context, id int64) error
	// DeleteMany 删除多个图片元数据
	DeleteMany(ctx context.Context, ids []int64) error
}
